local timer = require("single.timer")
local midws = reload("global.midws")

---批量写入日志
---@param generic function  通用批量插入函数
---@param tname string      日志表名
---@param tfields table     日志表字段{[name] = sort}-方便书写
return function (generic, tname, tfields)
    ---生产执行函数
    local appendf, concatf = generic(tname, tfields)
    local lognums = 0

    ---缓存数据入库
    local function logs()
        local sql = concatf()
        if not sql then
            return
        end
        midws.mdb:insert(sql)
        lognums = 0
    end

    ---插入日志缓存
    return function (...)
        appendf(...)
        lognums = lognums + 1
        if lognums >= 50 then
            logs()
        else
            ---更新定时
            timer:secFirstBy(tname, 1, logs)
        end
    end
end
